@echo off
title 物业保洁系统 - 部署验证工具
color 2F

echo.
echo  ============================================
echo   物业保洁系统 - 部署验证工具
echo   服务器：10.158.94.94
echo  ============================================
echo.

set SERVER_IP=10.158.94.94
set DB_USER=property_user
set DB_PASS=property_pass
set DB_NAME=property_cleaning

:menu
cls
echo.
echo  ============================================
echo   请选择验证项目：
echo  ============================================
echo   1. 测试服务器连接
echo   2. 测试数据库连接
echo   3. 测试前端服务
echo   4. 测试后端API
echo   5. 完整系统验证
echo   6. 退出
choice /C 123456 /N /M "请输入选项(1-6):"

if errorlevel 6 goto :eof
if errorlevel 5 goto full_test
if errorlevel 4 goto test_backend
if errorlevel 3 goto test_frontend
if errorlevel 2 goto test_database
if errorlevel 1 goto test_connection

goto menu

:test_connection
echo.
echo 正在测试服务器连接...
ping -n 1 -w 3000 %SERVER_IP% >nul
if %errorlevel%==0 (
    echo ✅ 服务器连接正常
) else (
    echo ❌ 服务器连接失败
    pause
    goto menu
)

ssh gs@%SERVER_IP% -o ConnectTimeout=5 exit >nul 2>&1
if %errorlevel%==0 (
    echo ✅ SSH连接正常
) else (
    echo ❌ SSH连接失败
    pause
    goto menu
)

echo.
echo 服务器状态检查：
ssh gs@%SERVER_IP% "
    echo '系统负载：'
    uptime
    echo
    echo '磁盘空间：'
    df -h / | tail -1
    echo
    echo '内存使用：'
    free -h | grep Mem
"

pause
goto menu

:test_database
echo.
echo 正在测试数据库连接...

ssh gs@%SERVER_IP% "
    echo '测试MySQL服务状态：'
    sudo systemctl status mysqld --no-pager -l | head -5
    echo
    echo '测试数据库连接：'
    mysql -u%DB_USER% -p%DB_PASS% -e \"SELECT '数据库连接成功' as status;\" %DB_NAME% 2>/dev/null
    if [ \$? -eq 0 ]; then
        echo '✅ 数据库连接成功'
        echo
        echo '数据库信息：'
        mysql -u%DB_USER% -p%DB_PASS% -e \"SELECT COUNT(*) as total_tables FROM information_schema.tables WHERE table_schema='%DB_NAME%';\" %DB_NAME%
        mysql -u%DB_USER% -p%DB_PASS% -e \"SELECT COUNT(*) as total_users FROM users;\" %DB_NAME%
    else
        echo '❌ 数据库连接失败'
    fi
"

pause
goto menu

:test_frontend
echo.
echo 正在测试前端服务...

curl -s -o nul -w "%{http_code}" http://%SERVER_IP%:3000 > temp.txt
set /p HTTP_CODE=<temp.txt
del temp.txt

if "%HTTP_CODE%"=="200" (
    echo ✅ 前端服务正常 (HTTP 200)
) else (
    echo ❌ 前端服务异常 (HTTP %HTTP_CODE%)
)

echo.
echo 正在检查前端服务端口...
ssh gs@%SERVER_IP% "
    echo '端口监听状态：'
    netstat -tlnp | grep :3000 || echo '端口3000未监听'
    echo
    echo '前端进程：'
    ps aux | grep 'http.server 3000' | grep -v grep || echo '前端服务未运行'
"

pause
goto menu

:test_backend
echo.
echo 正在测试后端API...

curl -s -o nul -w "%{http_code}" http://%SERVER_IP%:8080/actuator/health > temp.txt
set /p HTTP_CODE=<temp.txt
del temp.txt

if "%HTTP_CODE%"=="200" (
    echo ✅ 后端API正常 (HTTP 200)
) else (
    echo ❌ 后端API异常 (HTTP %HTTP_CODE%)
)

echo.
echo 正在检查后端服务...
ssh gs@%SERVER_IP% "
    echo '端口监听状态：'
    netstat -tlnp | grep :8080 || echo '端口8080未监听'
    echo
    echo 'Java进程：'
    ps aux | grep java | grep -v grep || echo 'Java服务未运行'
"

pause
goto menu

:full_test
echo.
echo 正在进行完整系统验证...
echo 这可能需要一些时间...

echo.
echo 1. 测试服务器连接...
ping -n 1 -w 3000 %SERVER_IP% >nul
if %errorlevel%==0 (
    echo ✅ 服务器连接正常
) else (
    echo ❌ 服务器连接失败
    pause
    goto menu
)

echo.
echo 2. 测试数据库连接...
ssh gs@%SERVER_IP% "
    mysql -u%DB_USER% -p%DB_PASS% -e \"SELECT '✅ 数据库连接成功' as status;\" %DB_NAME% 2>/dev/null
" >nul
if %errorlevel%==0 (
    echo ✅ 数据库连接正常
) else (
    echo ❌ 数据库连接失败
    pause
    goto menu
)

echo.
echo 3. 测试前端服务...
curl -s -o nul -w "%{http_code}" http://%SERVER_IP%:3000 > temp.txt
set /p HTTP_CODE=<temp.txt
del temp.txt

if "%HTTP_CODE%"=="200" (
    echo ✅ 前端服务正常
) else (
    echo ❌ 前端服务异常
)

echo.
echo 4. 测试后端API...
curl -s -o nul -w "%{http_code}" http://%SERVER_IP%:8080/actuator/health > temp.txt
set /p HTTP_CODE=<temp.txt
del temp.txt

if "%HTTP_CODE%"=="200" (
    echo ✅ 后端API正常
) else (
    echo ❌ 后端API异常
)

echo.
echo 5. 测试登录功能...
curl -s -X POST http://%SERVER_IP%:8080/api/auth/login \
     -H "Content-Type: application/json" \
     -d "{\"username\":\"admin\",\"password\":\"admin123\"}" > response.json

findstr /C:"token" response.json >nul
if %errorlevel%==0 (
    echo ✅ 登录功能正常
) else (
    echo ❌ 登录功能异常
)
del response.json

echo.
echo 6. 系统状态总结...
ssh gs@%SERVER_IP% "
    echo '系统负载：'
    uptime
    echo
    echo '磁盘空间：'
    df -h /
    echo
    echo '内存使用：'
    free -h
    echo
    echo '开放端口：'
    netstat -tlnp | grep -E ':(3000|8080|3306)'
"

echo.
echo  ============================================
echo   系统验证完成！
echo  ============================================
echo.
echo 如果所有测试都通过，系统已成功部署！
echo 访问地址：http://%SERVER_IP%:3000
pause
goto menu